package com.hc.controller;

import com.hc.dao.DeptDao;
import com.hc.dao.EmpDao;
import com.hc.pojo.Dept;
import com.hc.pojo.Emp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;

/**
 * @author hs
 * @date 2021/05/03
 */
@Controller
public class UserController {

    @Autowired
    private EmpDao empDao;
    @Autowired
    private DeptDao deptDao;

    /**
     * 验证登录
     * @param usernmae 。
     * @param password 。
     * @param model 。
     * @param session 。
     * @return 。
     */
    @RequestMapping("/user/login")
    public String login(@RequestParam("username") String usernmae , @RequestParam("password") String password , Model model, HttpSession session){
        //业务逻辑就省略了 直接来个假的账号密码验证
        if (!StringUtils.isEmpty(usernmae) && "123".equals(password)){
            //登陆成功,重定向借助下方的一个方法当做跳板
            session.setAttribute("loginUser",usernmae);
            return "redirect:/main.html";
        }else{
            model.addAttribute("mesg" , "账号或密码错误！");
            return "index";
        }
    }

    /**
     * 登录成功后 让上面的方法重定向到这里，这里在进行页面跳转
     * @return 。
     */
    @RequestMapping("/main.html")
    public String redi(){
        return "dashboard";
    }

    /**
     * 将所有员工信息返回
     * @param model 。
     * @return 。
     */
    @RequestMapping("/admin")
    public String userAdmin(Model model){
        Collection<Emp> empAll = empDao.findEmpAll();
        model.addAttribute("empAll" , empAll);
        return "emp/list";

    }

    /**
     * 当展示员工信息的页面点击了添加员工的按钮就会发送请求到这，
     * 然后查询部门的信息，以供下拉列表框选择 然后在跳转至添加员工的页面
     * @return
     */
    @GetMapping("/emp")
    public String toAddEmp(Model model){
        Collection<Dept> deptAll = deptDao.findDeptAll();
        model.addAttribute("deptAll",deptAll);
        return "emp/add";
    }

    /**
     * 添加一个员工，存入数据库，然后重定向至上面查询所有员工的servlet中
     * @param emp
     * @return
     */
    @PostMapping("/emp")
    public String addEmp(Emp emp , String date1) throws ParseException {
        //解决日期问题
        Date date = new SimpleDateFormat("yyyy-MM-dd").parse(date1);
        emp.setDate(date);
        empDao.save(emp);
        return "redirect:/admin";
    }

    /**
     * 通过id查询一个员工的信息
     * @return 员工的信息
     */
    @RequestMapping("/findByEId")
    public String findByIdEmp(Integer id , Model model){
        //员工信息
        Emp emp = empDao.findById(id);
        model.addAttribute("findEmp",emp);
        //部门信息
        Collection<Dept> deptAll = deptDao.findDeptAll();
        model.addAttribute("deptAll",deptAll);
        return "emp/update";
    }

    /**
     * 修改一个员工的信息
     * @param emp 员工信息
     * @return 查询所用员工信息的servlet
     */
    @RequestMapping("/update")
    public String update(Emp emp , String date1) throws ParseException {
        //解决日期问题
        Date date = new SimpleDateFormat("yyyy-MM-dd").parse(date1);
        emp.setDate(date);
        empDao.update(emp);
        return "redirect:/admin";
    }

    /**
     * 删除一个员工信息
     * @param id 员工id
     * @return 查询所有员工信息的servlet
     */
    @RequestMapping("/delect")
    public String delect(@RequestParam("id") Integer id){
        empDao.delete(id);
        return "redirect:/admin";
    }
}
